{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "initial_id",
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import re"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "id": "7bf95bdd",
   "metadata": {},
   "outputs": [],
   "source": [
    "mapping = {\n",
    "    \"proxy\": \"доверенность\",\n",
    "    \"contract\": \"договор\",\n",
    "    \"act\": \"акт\",\n",
    "    \"application\": \"заявление\",\n",
    "    \"order\": \"приказ\",\n",
    "    \"invoice\": \"счет\",\n",
    "    \"bill\": \"приложение\",\n",
    "    \"arrangement\": \"соглашение\",\n",
    "    \"contract offer\": \"договор оферты\",\n",
    "    \"statute\": \"устав\",\n",
    "    \"determination\": \"решение\",\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "id": "3c24f6a8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class</th>\n",
       "      <th>text</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>arrangement</td>\n",
       "      <td>СОГЛАШЕНИЕ N 8\\nо расторжении трудового догово...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>arrangement</td>\n",
       "      <td>Соглашение о предоставлении опциона на заключе...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>arrangement</td>\n",
       "      <td>Соглашение\\nо реструктуризации задолженности\\n...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>arrangement</td>\n",
       "      <td>Дополнительное соглашение\\r\\nк договору купли-...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>arrangement</td>\n",
       "      <td>Соглашение\\nо расторжении договора об оказании...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>496</th>\n",
       "      <td>bill</td>\n",
       "      <td>Счет № 5 от 01 октября 2020 г.\\r\\n\\r\\nПоставщи...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>497</th>\n",
       "      <td>bill</td>\n",
       "      <td>Счет на оплату № от 14 октября 2020 года\\r\\n\\r...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>498</th>\n",
       "      <td>bill</td>\n",
       "      <td>Счет №23                  от 12.09.2024 г.\\t\\t...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>499</th>\n",
       "      <td>bill</td>\n",
       "      <td>\"Огурец!\" (ИП Микрюков В.В.)\\t\\t\\t\\t\\t\\t\\r\\n\\t...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>500</th>\n",
       "      <td>bill</td>\n",
       "      <td>ООО «Тигр-Ряв»\\t\\t \\r\\nг. Липецк, ул. Масленая...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>501 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           class                                               text\n",
       "0    arrangement  СОГЛАШЕНИЕ N 8\\nо расторжении трудового догово...\n",
       "1    arrangement  Соглашение о предоставлении опциона на заключе...\n",
       "2    arrangement  Соглашение\\nо реструктуризации задолженности\\n...\n",
       "3    arrangement  Дополнительное соглашение\\r\\nк договору купли-...\n",
       "4    arrangement  Соглашение\\nо расторжении договора об оказании...\n",
       "..           ...                                                ...\n",
       "496         bill  Счет № 5 от 01 октября 2020 г.\\r\\n\\r\\nПоставщи...\n",
       "497         bill  Счет на оплату № от 14 октября 2020 года\\r\\n\\r...\n",
       "498         bill  Счет №23                  от 12.09.2024 г.\\t\\t...\n",
       "499         bill  \"Огурец!\" (ИП Микрюков В.В.)\\t\\t\\t\\t\\t\\t\\r\\n\\t...\n",
       "500         bill  ООО «Тигр-Ряв»\\t\\t \\r\\nг. Липецк, ул. Масленая...\n",
       "\n",
       "[501 rows x 2 columns]"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample = pd.read_csv('../data/sample.csv')\n",
    "sample"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "id": "d89f278f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "class\n",
       "proxy             71\n",
       "contract          70\n",
       "act               69\n",
       "application       61\n",
       "order             50\n",
       "invoice           43\n",
       "bill              41\n",
       "arrangement       40\n",
       "contract offer    25\n",
       "statute           21\n",
       "determination     10\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "value_counts = sample['class'].value_counts()\n",
    "value_counts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "id": "b442acd3",
   "metadata": {},
   "outputs": [],
   "source": [
    "from natasha import (\n",
    "    MorphVocab,\n",
    "    Doc,\n",
    "    Segmenter,\n",
    "    NewsEmbedding,\n",
    "    NewsMorphTagger,\n",
    "    NewsSyntaxParser,\n",
    "    NamesExtractor,\n",
    "    DatesExtractor,\n",
    "    AddrExtractor,\n",
    "    NewsNERTagger,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "id": "668fa342",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Инициализация необходимых компонентов\n",
    "segmenter = Segmenter()\n",
    "morph_vocab = MorphVocab()\n",
    "emb = NewsEmbedding()\n",
    "morph_tagger = NewsMorphTagger(emb)\n",
    "syntax_parser = NewsSyntaxParser(emb)\n",
    "ner_tagger = NewsNERTagger(emb)\n",
    "names_extractor = NamesExtractor(morph_vocab)\n",
    "dates_extractor = DatesExtractor(morph_vocab)\n",
    "addr_extractor = AddrExtractor(morph_vocab)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "id": "c444f45b",
   "metadata": {},
   "outputs": [],
   "source": [
    "def remove_entities(text: str) -> str:\n",
    "\n",
    "    # Создание объекта Doc для обработки текста\n",
    "    doc = Doc(text)\n",
    "\n",
    "    # Анализ текста и извлечение сущностей\n",
    "    doc.segment(segmenter)\n",
    "    doc.tag_morph(morph_tagger)\n",
    "    doc.parse_syntax(syntax_parser)\n",
    "    doc.tag_ner(ner_tagger)\n",
    "\n",
    "    # Получение всех предлогов в тексте\n",
    "    # prepositions = [token.text for token in doc.tokens if token.pos == 'ADP']\n",
    "\n",
    "\n",
    "\n",
    "    for span in doc.spans:\n",
    "        span.normalize(morph_vocab)\n",
    "        span.extract_fact(names_extractor)\n",
    "        span.extract_fact(dates_extractor)\n",
    "        span.extract_fact(addr_extractor)\n",
    "\n",
    "\n",
    "\n",
    "    # Удаление всех сущностей из текста\n",
    "    for span in doc.spans:\n",
    "        text = text.replace(span.text, '')\n",
    "    \n",
    "    # # Удаление всех предлогов из текста\n",
    "    # for token in doc.tokens:\n",
    "    #     if token.text in prepositions:\n",
    "    #         text = text.replace(token.text, '')\n",
    "\n",
    "    return text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "id": "92834440",
   "metadata": {},
   "outputs": [],
   "source": [
    "def nat_lemma(text: str) -> str:\n",
    "    doc = Doc(text)\n",
    "    doc.segment(segmenter)\n",
    "    doc.tag_morph(morph_tagger)\n",
    "    doc.parse_syntax(syntax_parser)\n",
    "    for token in doc.tokens:\n",
    "        token.lemmatize(morph_vocab) \n",
    "\n",
    "    return ' '.join([_.lemma for _ in doc.tokens])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "id": "4ade1347",
   "metadata": {},
   "outputs": [],
   "source": [
    "import nltk\n",
    "from nltk import WordNetLemmatizer\n",
    "from nltk.tokenize import word_tokenize\n",
    "from collections import Counter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "id": "4aa5f554",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[nltk_data] Downloading package punkt to /home/user/nltk_data...\n",
      "[nltk_data]   Package punkt is already up-to-date!\n",
      "[nltk_data] Downloading package wordnet to /home/user/nltk_data...\n",
      "[nltk_data]   Package wordnet is already up-to-date!\n"
     ]
    }
   ],
   "source": [
    "# Загрузка ресурсов\n",
    "nltk.download('punkt')\n",
    "nltk.download('wordnet')\n",
    "lemmatizer = WordNetLemmatizer()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "id": "06fa47f7",
   "metadata": {},
   "outputs": [],
   "source": [
    "def lemmat(text):\n",
    "    if not isinstance(text, str):\n",
    "        return\n",
    "    # Токенизация текста\n",
    "    tokens = word_tokenize(text)\n",
    "    # Лемматизация каждого токена\n",
    "    lemmatized_tokens = [lemmatizer.lemmatize(token) for token in tokens]\n",
    "    # Склеивание лемматизированных токенов обратно в текст\n",
    "    lemmatized_text = ' '.join(lemmatized_tokens)\n",
    "    return lemmatized_text\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "id": "032e32f8",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "replace_words = {\n",
    "    \"доверенность\" : re.compile(r\"\\bд\\s*о\\s*в\\s*е\\s*р\\s*е\\s*н\\s*н\\s*о\\s*с\\s*т\\s*ь\\b\"),\n",
    "    \"договор\" : re.compile(r\"\\bд\\s*о\\s*г\\s*о\\s*в\\s*о\\s*р\\b\"),\n",
    "    \"акт\": re.compile(r\"\\bа\\s*к\\s*т\\b\"),\n",
    "    \"заявление\": re.compile(r\"\\bз\\s*а\\s*я\\s*в\\s*л\\s*е\\s*н\\s*и\\s*е\\b\"),\n",
    "    \"приказ\": re.compile(r\"\\bп\\s*р\\s*и\\s*к\\s*а\\s*з\\b\"),\n",
    "    \"счет\": re.compile(r\"\\bс\\s*ч\\s*е\\s*т\\b\"),\n",
    "    \"приложение\": re.compile(r\"\\bп\\s*р\\s*и\\s*л\\s*о\\s*ж\\s*е\\s*н\\s*и\\s*e\\b\"),\n",
    "    \"соглашение\": re.compile(r\"\\bс\\s*о\\s*г\\s*л\\s*а\\s*ш\\s*е\\s*н\\s*и\\s*e\\b\"),\n",
    "    \"договор оферты\": re.compile(r\"\\bд\\s*о\\s*г\\s*о\\s*в\\s*о\\s*р\\s*о\\s*ф\\s*е\\s*р\\s*т\\s*ы\\b\"),\n",
    "    \"устав\": re.compile(r\"\\bу\\s*с\\s*т\\s*а\\s*в\\b\"),\n",
    "    \"решение\": re.compile(r\"\\bр\\s*е\\s*ш\\s*е\\s*н\\s*и\\s*е\\b\")\n",
    "}\n",
    "\n",
    "\n",
    "def clean_text(text: str) -> str:    \n",
    "    for key, value in replace_words.items():\n",
    "        text = re.sub(value, key, text)\n",
    "\n",
    "    # text = re.sub(r'[^;:\\?!,\\.\\-а-яА-Яa-zA-Z\\s<]', '', text)\n",
    "    text = re.sub(r'[^а-яА-Яa-zA-Z\\s<]', '', text)\n",
    "    text = re.sub(r'\\.\\.+', '', text)\n",
    "    text = re.sub(r'\\s+', ' ', text)\n",
    "    \n",
    "    text = ' '.join([word for word in text.split() if len(word) > 2])\n",
    "    text = re.sub(r'\\s+', ' ', text)\n",
    "    text = re.sub(r'[^\\w\\s]', '', text)\n",
    "    return text\n",
    "\n",
    "\n",
    "def data_processing(sample : pd.DataFrame) -> pd.DataFrame:\n",
    "    sample[\"text\"] = sample[\"text\"].fillna(\"NaN\")\n",
    "    sample['text'] = sample['text'].apply(remove_entities)\n",
    "    sample['text'] = sample['text'].str.lower()\n",
    "    sample['text'] = sample['text'].apply(clean_text)\n",
    "    return sample"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "id": "c9afc57b",
   "metadata": {},
   "outputs": [],
   "source": [
    "def count_word(data:pd.DataFrame) -> None:\n",
    "    text = ' '.join(data['text'])\n",
    "\n",
    "        \n",
    "    # Токенизируем текст на слова\n",
    "    words = word_tokenize(text)\n",
    "\n",
    "    # Считаем частоту каждого слова\n",
    "    word_freq = Counter(words)\n",
    "\n",
    "    # Выводим наиболее часто встречаемые слова\n",
    "    most_common_words = word_freq.most_common(15)\n",
    "    most_common_words = [( word, freq) for word, freq in  most_common_words if len(word)>2 ]\n",
    "    print(\"Наиболее часто встречаемые слова:\")\n",
    "    for word, freq in most_common_words:\n",
    "        # if len(word)>2:\n",
    "            print(f\"{word }: {freq} раз\")\n",
    "    print('----------------------------------------------------')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "id": "4db6e7b9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# sample = pd.read_csv('../data/sample.csv')\n",
    "# sample = data_processing(sample)\n",
    "\n",
    "# for key, value in mapping.items():\n",
    "#     data_t= sample[sample['class'] == key]\n",
    "#     data_t['text'] = data_t['text'].apply(lemmat)\n",
    "#     count_word(data_t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "id": "55e7d7c1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class</th>\n",
       "      <th>text</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>arrangement</td>\n",
       "      <td>соглашение расторжении трудового договора октя...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>arrangement</td>\n",
       "      <td>соглашение предоставлении опциона заключение д...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>arrangement</td>\n",
       "      <td>соглашение реструктуризации задолженности дека...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>arrangement</td>\n",
       "      <td>дополнительное соглашение договору куплипродаж...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>arrangement</td>\n",
       "      <td>соглашение расторжении договора оказании услуг...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>496</th>\n",
       "      <td>bill</td>\n",
       "      <td>счет октября поставщик покупатель васильева на...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>497</th>\n",
       "      <td>bill</td>\n",
       "      <td>счет оплату октября года поставщик инн адрес п...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>498</th>\n",
       "      <td>bill</td>\n",
       "      <td>счет поставщик инн кпп пгт новая покупатель ин...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>499</th>\n",
       "      <td>bill</td>\n",
       "      <td>огурец адрес образец заполнения платежного пор...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>500</th>\n",
       "      <td>bill</td>\n",
       "      <td>масленая инн бик счетоферта поставку товара по...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>501 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           class                                               text\n",
       "0    arrangement  соглашение расторжении трудового договора октя...\n",
       "1    arrangement  соглашение предоставлении опциона заключение д...\n",
       "2    arrangement  соглашение реструктуризации задолженности дека...\n",
       "3    arrangement  дополнительное соглашение договору куплипродаж...\n",
       "4    arrangement  соглашение расторжении договора оказании услуг...\n",
       "..           ...                                                ...\n",
       "496         bill  счет октября поставщик покупатель васильева на...\n",
       "497         bill  счет оплату октября года поставщик инн адрес п...\n",
       "498         bill  счет поставщик инн кпп пгт новая покупатель ин...\n",
       "499         bill  огурец адрес образец заполнения платежного пор...\n",
       "500         bill  масленая инн бик счетоферта поставку товара по...\n",
       "\n",
       "[501 rows x 2 columns]"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample = pd.read_csv('../data/sample.csv')\n",
    "sample = data_processing(sample)\n",
    "sample"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "id": "362ea49a",
   "metadata": {},
   "outputs": [],
   "source": [
    "sample['text']=sample['text'].apply(nat_lemma)\n",
    "sample.to_csv('../data/lemma_sample.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "6c39aba7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "директор бальмонт владимир павлович паспорт адрес регистрация : ул . красин , кв . номер лицевой счет : номер сотовый телефон : ---- заявление управлять компания являться собственник квартира адрес ул . красин , кв . дом находиться под управление ооо счастие быть . связь приобретение квартира г . , просить открыть лицевой счет для оплата коммунальный услуга имя . приложение : копия договор купля-продажа . выписка реестр . свидетельство право собственность . октябрь бальмонт\n"
     ]
    }
   ],
   "source": [
    "ext_with_entities = \"директор бальмонт владимир павлович паспорт адрес регистрация : ул . красин , кв . номер лицевой счет : номер сотовый телефон : ---- заявление управлять компания являться собственник квартира адрес ул . красин , кв . дом находиться под управление ооо счастие быть . связь приобретение квартира г . , просить открыть лицевой счет для оплата коммунальный услуга имя . приложение : копия договор купля-продажа . выписка реестр . свидетельство право собственность . октябрь бальмонт\"\n",
    "cleaned_text = remove_entities(ext_with_entities)\n",
    "print(cleaned_text)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f69a436a",
   "metadata": {},
   "source": [
    "Тестирование на расширенных данных"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "190e74c0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class</th>\n",
       "      <th>text</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>proxy</td>\n",
       "      <td>Доверенность\\n\\n\\n\\nг. Ижевск\\n\\nДата выдачи: ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>proxy</td>\n",
       "      <td>ООО \"Артемида\"\\n\\n426000, г. Ижевск, ул. Сосно...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>proxy</td>\n",
       "      <td>Общество с ограниченной ответственностью \"Сигм...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>proxy</td>\n",
       "      <td>Доверенность\\n\\n\\n\\n\\n\\n\\n\\nг. Ижевск\\n\\nДвадц...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>proxy</td>\n",
       "      <td>Доверенность\\n\\n\\n\\nг. Ижевск\\n\\n\\n\\nтринадцат...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1458</th>\n",
       "      <td>determination</td>\n",
       "      <td>ООО «Улыбка»\\n\\n\\n\\nРешение №6\\n\\n\\n\\nЕдинстве...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1459</th>\n",
       "      <td>determination</td>\n",
       "      <td>Решение №33\\n\\nЕдинственного участника ООО «Зе...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1460</th>\n",
       "      <td>determination</td>\n",
       "      <td>РЕШЕНИЕ  № 123\\n\\nвнеочередного Общего собрани...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1461</th>\n",
       "      <td>determination</td>\n",
       "      <td>РЕШЕНИЕ № 07\\n\\nединственного Участника Общест...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1462</th>\n",
       "      <td>determination</td>\n",
       "      <td>Решение учредителя № 07\\n\\nОбщества с ограниче...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1463 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "              class                                               text\n",
       "0             proxy  Доверенность\\n\\n\\n\\nг. Ижевск\\n\\nДата выдачи: ...\n",
       "1             proxy  ООО \"Артемида\"\\n\\n426000, г. Ижевск, ул. Сосно...\n",
       "2             proxy  Общество с ограниченной ответственностью \"Сигм...\n",
       "3             proxy  Доверенность\\n\\n\\n\\n\\n\\n\\n\\nг. Ижевск\\n\\nДвадц...\n",
       "4             proxy  Доверенность\\n\\n\\n\\nг. Ижевск\\n\\n\\n\\nтринадцат...\n",
       "...             ...                                                ...\n",
       "1458  determination  ООО «Улыбка»\\n\\n\\n\\nРешение №6\\n\\n\\n\\nЕдинстве...\n",
       "1459  determination  Решение №33\\n\\nЕдинственного участника ООО «Зе...\n",
       "1460  determination  РЕШЕНИЕ  № 123\\n\\nвнеочередного Общего собрани...\n",
       "1461  determination  РЕШЕНИЕ № 07\\n\\nединственного Участника Общест...\n",
       "1462  determination  Решение учредителя № 07\\n\\nОбщества с ограниче...\n",
       "\n",
       "[1463 rows x 2 columns]"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample = pd.read_csv('../data/external_with_samplelabel.csv')\n",
    "sample = sample[['class','text']]\n",
    "sample"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "39212f30",
   "metadata": {},
   "outputs": [],
   "source": [
    "sample = data_processing(sample)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "71f5fac0",
   "metadata": {},
   "outputs": [],
   "source": [
    "sample['text']=sample['text'].apply(nat_lemma)\n",
    "sample.to_csv('../data/lemma_external_with_samplelabel.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "929e1ad2",
   "metadata": {},
   "outputs": [],
   "source": [
    "sample_new = pd.read_csv('../data/external_with_samplelabel.csv')\n",
    "sample_new['text'] = sample['text']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "21798378",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>class</th>\n",
       "      <th>link</th>\n",
       "      <th>path</th>\n",
       "      <th>text</th>\n",
       "      <th>clear_text</th>\n",
       "      <th>clear_text_in_sample</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>proxy</td>\n",
       "      <td>https://assistentus.ru/wp-content/uploads/file...</td>\n",
       "      <td>obrazec-doverennost-na-registracziyu-ts-v-gibd...</td>\n",
       "      <td>доверенность дата выдача третий сентябрь два т...</td>\n",
       "      <td>доверенность г. ижевск дата выдачи: третье сен...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>proxy</td>\n",
       "      <td>https://assistentus.ru/wp-content/uploads/file...</td>\n",
       "      <td>obrazec-doverennost-na-zaverenie-kopij-dokumentov</td>\n",
       "      <td>тело огрн инн кпп доверенность город двадцать ...</td>\n",
       "      <td>ооо артемида г. ижевск, ул. сосновая, д. а, те...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>proxy</td>\n",
       "      <td>https://assistentus.ru/wp-content/uploads/file...</td>\n",
       "      <td>obrazec-doverennost-na-poluchenie-denezhnyh-sr...</td>\n",
       "      <td>общество ограничить ответственность партизанск...</td>\n",
       "      <td>общество ограниченной ответственностью сигма г...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>proxy</td>\n",
       "      <td>https://assistentus.ru/wp-content/uploads/file...</td>\n",
       "      <td>obrazec-doverennost-na-predstavlenie-interesov...</td>\n",
       "      <td>доверенность двадцать пятый сентябрь два тысяч...</td>\n",
       "      <td>доверенность г. ижевск двадцать пятое сентября...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>proxy</td>\n",
       "      <td>https://assistentus.ru/wp-content/uploads/file...</td>\n",
       "      <td>obrazec-doverennost-na-poluchenie-trudovoj-kni...</td>\n",
       "      <td>доверенность тринадцатый март два тысяча девят...</td>\n",
       "      <td>доверенность г. ижевск тринадцатое марта две т...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1458</th>\n",
       "      <td>determination</td>\n",
       "      <td>https://assistentus.ru/wp-content/uploads/file...</td>\n",
       "      <td>obrazec-reshenie-o-smene-yuridicheskogo-adresa...</td>\n",
       "      <td>решение единственный участник смена юридически...</td>\n",
       "      <td>ооо улыбка решение единственного участника сме...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1459</th>\n",
       "      <td>determination</td>\n",
       "      <td>https://assistentus.ru/wp-content/uploads/file...</td>\n",
       "      <td>obrazec-reshenie-uchreditelya-o-smene-direktor...</td>\n",
       "      <td>решение единственный участник март год единств...</td>\n",
       "      <td>решение единственного участника ооо зеленая ми...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1460</th>\n",
       "      <td>determination</td>\n",
       "      <td>https://assistentus.ru/wp-content/uploads/file...</td>\n",
       "      <td>obrazec-resheniye-ychrediteley-ob-odobrenii-kr...</td>\n",
       "      <td>решение внеочередной место нахождение советски...</td>\n",
       "      <td>решение внеочередного общего собрания участник...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1461</th>\n",
       "      <td>determination</td>\n",
       "      <td>https://assistentus.ru/wp-content/uploads/file...</td>\n",
       "      <td>obrazec-reshenie-o-smene-naimenovaniya-ooo</td>\n",
       "      <td>единственный участник ограничить ответственнос...</td>\n",
       "      <td>решение единственного участника общества огран...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1462</th>\n",
       "      <td>determination</td>\n",
       "      <td>https://assistentus.ru/wp-content/uploads/file...</td>\n",
       "      <td>obrazec-reshenie-uchreditelya-o-smene-direktora</td>\n",
       "      <td>решение учредитель смена директор единственный...</td>\n",
       "      <td>решение учредителя общества ограниченной ответ...</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1463 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "              class                                               link  \\\n",
       "0             proxy  https://assistentus.ru/wp-content/uploads/file...   \n",
       "1             proxy  https://assistentus.ru/wp-content/uploads/file...   \n",
       "2             proxy  https://assistentus.ru/wp-content/uploads/file...   \n",
       "3             proxy  https://assistentus.ru/wp-content/uploads/file...   \n",
       "4             proxy  https://assistentus.ru/wp-content/uploads/file...   \n",
       "...             ...                                                ...   \n",
       "1458  determination  https://assistentus.ru/wp-content/uploads/file...   \n",
       "1459  determination  https://assistentus.ru/wp-content/uploads/file...   \n",
       "1460  determination  https://assistentus.ru/wp-content/uploads/file...   \n",
       "1461  determination  https://assistentus.ru/wp-content/uploads/file...   \n",
       "1462  determination  https://assistentus.ru/wp-content/uploads/file...   \n",
       "\n",
       "                                                   path  \\\n",
       "0     obrazec-doverennost-na-registracziyu-ts-v-gibd...   \n",
       "1     obrazec-doverennost-na-zaverenie-kopij-dokumentov   \n",
       "2     obrazec-doverennost-na-poluchenie-denezhnyh-sr...   \n",
       "3     obrazec-doverennost-na-predstavlenie-interesov...   \n",
       "4     obrazec-doverennost-na-poluchenie-trudovoj-kni...   \n",
       "...                                                 ...   \n",
       "1458  obrazec-reshenie-o-smene-yuridicheskogo-adresa...   \n",
       "1459  obrazec-reshenie-uchreditelya-o-smene-direktor...   \n",
       "1460  obrazec-resheniye-ychrediteley-ob-odobrenii-kr...   \n",
       "1461         obrazec-reshenie-o-smene-naimenovaniya-ooo   \n",
       "1462    obrazec-reshenie-uchreditelya-o-smene-direktora   \n",
       "\n",
       "                                                   text  \\\n",
       "0     доверенность дата выдача третий сентябрь два т...   \n",
       "1     тело огрн инн кпп доверенность город двадцать ...   \n",
       "2     общество ограничить ответственность партизанск...   \n",
       "3     доверенность двадцать пятый сентябрь два тысяч...   \n",
       "4     доверенность тринадцатый март два тысяча девят...   \n",
       "...                                                 ...   \n",
       "1458  решение единственный участник смена юридически...   \n",
       "1459  решение единственный участник март год единств...   \n",
       "1460  решение внеочередной место нахождение советски...   \n",
       "1461  единственный участник ограничить ответственнос...   \n",
       "1462  решение учредитель смена директор единственный...   \n",
       "\n",
       "                                             clear_text  clear_text_in_sample  \n",
       "0     доверенность г. ижевск дата выдачи: третье сен...                     1  \n",
       "1     ооо артемида г. ижевск, ул. сосновая, д. а, те...                     1  \n",
       "2     общество ограниченной ответственностью сигма г...                     1  \n",
       "3     доверенность г. ижевск двадцать пятое сентября...                     1  \n",
       "4     доверенность г. ижевск тринадцатое марта две т...                     1  \n",
       "...                                                 ...                   ...  \n",
       "1458  ооо улыбка решение единственного участника сме...                     1  \n",
       "1459  решение единственного участника ооо зеленая ми...                     1  \n",
       "1460  решение внеочередного общего собрания участник...                     1  \n",
       "1461  решение единственного участника общества огран...                     1  \n",
       "1462  решение учредителя общества ограниченной ответ...                     0  \n",
       "\n",
       "[1463 rows x 6 columns]"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample_new"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "4131dfb7",
   "metadata": {},
   "outputs": [],
   "source": [
    "sample_new.to_csv('../data/lemma_external_with_samplelabel.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "70ede6fc",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
